#ifndef __AUTH_H__
#define __AUTH_H__

#include "protocol.h"
#include "common.h"
#include <crypt.h>  // 用于密码加密（需-lcrypt编译）

// 用户认证信息（从配置文件加载）
typedef struct {
    char username[MAX_USERNAME_LEN];
    char passwd_hash[64];  // crypt加密后的哈希（如"$6$salt$hash..."）
} UserInfo;

// 认证请求参数
typedef struct {
    char username[MAX_USERNAME_LEN];
    char passwd_plain[MAX_PASSWD_LEN];  // 明文密码
} AuthRequest;

// 认证函数声明
int init_user_auth(const char *conf_path, UserInfo *user);
int verify_password(const char *input_pwd, const char *stored_hash);
int handle_login(SocketFd client_fd, const AuthRequest *req, UserInfo *user);
int handle_logout(SocketFd client_fd);

#endif // __AUTH_H__